1. Field of the Invention
The present invention relates to control systems for graphics output devices, and more particularly, a technique for preparing and printing pen-stroke image information on a raster-type output device.
2. History of the Prior Art
Serial printing mechanisms capable of producing random graphic and character images on a page have existed for some time in the form of dot matrix, ink jet, thermal and other printers. These devices typically operate by scanning a printhead or other print mechanism across a page while printing individual dots on the paper (or other printing medium), advancing the paper, then repeating the process. This process can also be accomplished by different sequences of motions of the printhead and the paper in combinations to produce stripes of image on the medium. The printhead may contain any number of printing elements, allowing multiple rows of dots (print lines), and/or sometimes multiple colors, to be printed in any single pass of the printhead. Some printers make multiple passes of the printhead in a single section of the paper, printing a single color in each pass.
These printing mechanisms are all speed constrained by printheads with limited printing frequency capabilities, typically on the order of 500-10,000 dots per second per printing element. Frequency constraints are the result of mechanical speed limitations or heat buildup (as in thermal and thermal ink jet), drop formation rates (ink jet), or other factors. As a result of these frequency constraints, these printers have typically limited their applications to those requiring only limited dot placement resolution on the printing medium.
Greater resolution using classical technologies would have a significant effect on throughput. To double the resolution would theoretically require twice as many dots to be printed per pass (to double the horizontal resolution) and would also require twice as many passes of the printhead to be made (to double the vertical resolution). The effect then would be to reduce throughput by a factor of four. Any increase in resolution by a factor of X would produce an X-squared reduction in throughput. To achieve truly high quality output using these technologies would have an unacceptable effect on throughput.
Graphics processors and vector-to-raster converters have typically taken the form of graphics information being input to the system and an array of dots being output to replicate the graphics input language as accurately as possible, given the resolution of the device. This is done without regard for the mechanical configuration or limitations of the mechanical device. That is, dots are placed at each point on the raster array which is closest to the desired vectors' positions.
To do this, the graphics processor must typically parse graphics language input (such as HPGL13 Hewlett Packard Graphics Language) into a series of vectors. Complex commands such as characters, circles, etc. may result in multiple vectors being generated. Then, a vector-to-raster converter typically takes a resulting vector with endpoints x1, y1 and x2, y2. It converts this into an equivalent of the following form:
x1, y1 PA0 slope PA0 length (in either x or y) PA0 color (if the device produces color output)
Beginning at x1, y1, then, it increments y (or x) by one, adds the slope to x (or y), then finds the point on the output array closest to this result. The converter then repeats this process until it reaches the end of the vector and repeats the entire process for each vector to be printed. Only after converting all vectors for a given section of output can that output begin, since the last vector may begin at the first position to be printed.
Some converters perform this operation on the entire plot file before beginning to print. Others convert on the fly, performing these operations on only a band of output at a time (banded vector to raster converters). These converters sometimes use sorting and sections of vectors to improve their efficiency. None of these techniques, however, is designed to change the eventual placement of dots on the output medium. They are merely different methods of trading memory requirements with processing time.
Printhead control has also been done with little regard to the capabilities of the printhead. Although most printing mechanisms typically skip over large blank areas of output, when they print they virtually always do so at a single, preset speed consistent with the maximum dot placement density achievable for a preselected resolution (e.g. letter quality or draft). Again, they have not looked at how they may take advantage of processing or limit their speed constraints by treating the entire printing process as a system rather than a set of black boxes (vector to raster converter, motor control, print element drivers, printhead and print elements).